# encoding:utf-8
'''
@author : xaing
@time : 2019/4/7 12:21
@地址 : 广州
@作用 : excel相关
    依赖  pip3 install openpyxl

@结果 :
'''

# 操作最新的excel
import openpyxl as excel
# 旧式的excel
import xlwt

from version1 import fileUtils as file


def open_xlsx(excelPath):
    '''
    xlsx 打开一个excel文件
    :param excelPath: excel文件的路径
    :return: 返回一个工作薄
    '''
    if not file.isFileManyCheck(excelPath):
        raise Exception("不能是目录，只能是文件名")

    suffix = file.getFileInfo(excelPath)['suffix']
    suffix = suffix.lower()

    # is 是对比内存地址的， == 是判断字符串是不是相等的
    if '.xls' == str(suffix):
        raise Exception("不支持旧的xls，只能是 .xlsx 格式的excel")

    # 加载工作薄
    wbook = excel.load_workbook(excelPath)
    return wbook


def getAllSheetsName_xlsx(wbook):
    '''
    获取当前所有工作表的名称， 返回一个列表
    :param wbook: excel工作薄
    :return: ['Sheet1', 'Sheet2', 'Sheet3']
    '''
    if wbook is None:
        raise Exception("工作薄已关闭")

    return wbook.sheetnames


def getSheetByName_xlsx(wbook, sheetName):
    '''
    获取指定工作薄中 sheet名字为 sheetName 的工作表
    :param wbook: 工作薄
    :param sheetName: 工作表名
    :return:
    '''
    return wbook[sheetName]


def getActiveSheet_xlsx(wbook):
    '''
    返回当前活跃的工作表 sheet
    :param wbook: excel工作薄
    :return: <Worksheet "Sheet1"> 和 wbook['Sheet1'] 获取效果是一样的
    '''
    if wbook is None:
        raise Exception("工作薄已关闭")

    return wbook.active


def getCell_xlsx(sheet, row, column):
    '''
    获取单元格指定行和指定列的内容
    :param sheet: 工作表
    :param row: 指定行
    :param column: 指定列
    :return: 返回cell对象，cell.value 就能得到数据
    '''
    return sheet.cell(row= row, column= column)



def write_xls(sheetName, datas, pathFile):
    '''
    保存数据到excel
    :param sheetName: 工作表名
    :param datas: 数据 形式：stus = [['姓名', '年龄', '性别', '分数'],['mary', 20, '女', 89.9]]
    :param pathFile:保存的路径 e:/1.xls
    :return:
    '''
    # 新建一个excel
    book = xlwt.Workbook()
    # 添加一个sheet页
    sheet = book.add_sheet(sheetName)

    # 控制行
    row = 0
    for data in datas:
        # 控制列
        col = 0
        # 再循环里面list的值，每一列
        for stu in data:
            sheet.write(row, col, stu)
            col += 1

        row += 1

    # 保存到当前目录下
    book.save(pathFile)



